Personal computer systems typically include several different storage components to store programs and data. These storage components include memory devices that form part of the PC, such as random access memory (RAM) and nonvolatile read-only memory (ROM), and memory devices that are located external to the PC system, such as storage disks (both hard disks and floppy disks). To load an operating system on a PC, it is necessary to initialize or "boot" the system by loading and executing boot code. Because the PC typically is unable to access external devices until after it is booted, it is necessary to store the boot code internally so that it can be readily accessed by the PC to initialize the system.
Of the two types of memory devices (ROM and RAM) that are located internally to the PC, it is generally preferable to use ROM to store the initialization and basic operating programs for the PC. Data can only be stored in and retrieved from RAM as long as a minimum threshold voltage remains supplied to that device. When power is removed from the RAM device, all data in RAM is lost. By contrast, instructions and other data stored in ROM are retained even when power to the ROM is turned off. As a result, boot code and other initialization and basic operating programs typically are stored in ROM.
One type of ROM commonly used today is termed "flash ROM." A flash ROM may be programmed by a user, and once programmed, will retain those instructions until subsequently erased. Normally, to alter the information stored in flash ROM, the old information must first be erased. After the contents of flash ROM are erased, the flash ROM may be reprogrammed with new code or data. Flash ROM therefore prevents stored information from being inadvertently written over, and, like other types of ROM, flash ROM retains data even when the system is powered down. Because of these and other features, flash ROM devices have become very popular in PC systems for storing certain critical instructions or code.
Some of the types of information typically stored in flash ROM include: (1) boot code; (2) Ediag information; (3) the main BIOS; and (4) EISA configuration information. In general, the boot code can be program code for system initialization, such as that needed to boot the central processing unit ("CPU"), which controls the operation of the PC system. Boot code typically requires minimal or the least amount of updating. Because the boot code essentially initiates operation of the PC system, it is important that the contents of the boot code not be altered accidently when reprogramming the flash ROM. The Ediag information comprises diagnostic instructions enabling the CPU to perform self-diagnosis routines to detect system errors. As such, some or all of the contents of the Ediag code may be changed periodically. The main BIOS includes the application or program code itself, and may include data as well. The BIOS also may be reprogrammed periodically.
The EISA configuration code comprises information relating to the operation of the system bus and certain components that may be added to the system bus through expansion slots. In addition to accommodating add-on components, EISA systems provide expedited transfer of address and data signals through an expanded bus architecture. One of the methods that is used to expedite the transfer of data and address signals is to provide bus master capabilities, which permit operation of the system bus by components other than the main CPU. As a result, the CPU may be located on a plug-in processor card that is separate from the motherboard. In addition, other EISA cards may be plugged into the motherboard to enhance system performance, including bus controllers, hard drive controllers, graphics cards, interface cards, network cards, and the like. Because of the various cards that can be added to the EISA bus system, EISA specifications have been implemented to provide an industry standard for the EISA bus and EISA cards. The EISA configuration information stored in flash ROM relates to configuration information which is used to initialize the motherboard and the expansion boards. Because boards may be added or changed frequently, the EISA configuration information in flash ROM must necessarily be reprogrammed on a regular basis as boards or cards are added or changed. The present invention is directed at a method for reprogramming an EISA configuration block in certain types of flash ROM.
Instructions and data typically are stored in flash ROM in discrete sectors that can be identified by their addresses. For example, one present-day flash ROM manufactured by INTEL CORPORATION.RTM., the INTEL 28F001BX-T (the "Intel flash ROM"), which is shown generally in FIG. 1, includes a memory array that is divided into four sectors, identified by INTEL CORPORATIONS as sectors 0-3. In that four-sector Intel flash ROM, sector 0 is the largest sector of the memory array and is employed to store the main BIOS data. Sector 1 typically stores the Ediags diagnostic instructions and sector 2 stores the EISA configuration code. Boot code normally is stored in sector 3 of Intel's four-sector flash ROM.
In accordance with the specifications for the Intel flash ROM, the contents of this four-sector flash ROM can be erased by applying a 12 volt signal to a particular input of the flash ROM device and providing specific erase commands into the device's command register identifying the sector or sectors of flash ROM to be erased. After the erase operation, the Intel flash ROM device automatically enters a Command Mode, enabling new code to be written to the flash ROM device. When the flash ROM has been reprogrammed, the 12 volt signal is removed from the ROM input, and the content of the command register defaults to its read command, once again converting the Intel flash ROM to a read-only device. Causing the flash ROM to return to its read-only state is termed "reflashing" the ROM.
Originally, due to the nature and design of this and other prior art flash ROM devices, the entire memory array of the device had to be erased in order to erase any one sector. This exposed all of the instructions and data in the memory device to potential data loss or corruption (due to the erasure and reprogramming process) whenever any portion of the information needed to be erased and reprogrammed. For example, in instances where some of the Ediags instructions were to be reprogrammed but the boot code was to remain unchanged, the boot code nevertheless had to be erased and reprogrammed along with the new Ediags instructions. Inadvertent erasure or programming of the boot code has the potential for rendering an entire computer system nonfunctional.
A first solution to this shortcoming of prior flash ROM devices was to provide a separate flash ROM for storing the boot code. One obvious disadvantage to this practice was that at least two flash ROMs were required--one to store the boot code, and the other to store other program code and data. Another solution for protecting boot code, or certain other critical information, was the development of various flash memory array blocking techniques which allowed segregating different portions or sectors of stored information. In this way, when one portion needed to be erased, the other portion(s) did not have to be erased and rewritten, and were therefore not exposed to potential data loss or corruption. For example, a blocking technique was developed to preserve the boot code in the Intel four-sector flash ROM described above. This blocking technique included attaching a jumper and grounding a particular pin of the flash ROM. However, this Intel flash ROM still required a 12 volt power source for effecting the erase commands, as well as additional and costly related support circuitry necessary for providing and controlling that power source.
More recently, a new eight-sector flash ROM device has become available that is operable with only a 5 volt source. This eight-sector flash ROM, manufactured by ADVANCED MICRO DEVICES, INC..RTM. as the Am29F010 (the "AMD flash ROM") is particularly desirable for use in microprocessor-based systems because it does not require the additional and expensive capacitors, transistors and circuitry necessary for supporting a 12 volt source.
The AMD flash ROM, however, is not immediately compatible with hardware supporting the Intel flash ROM. For example, in the eight-sector AMD flash ROM the boot code, the Ediag instructions, and the EISA configuration code all are stored together in the same sector of the memory array (sector 7), while the BIOS is stored in sectors 0-6, as compared to the Intel flash ROM, which stores boot code, Ediags instructions and EISA configuration code in separate sectors. While array blocking techniques are employed in the AMD flash ROM to permit discrete sectors of data and instructions to be selectively erased and rewritten, any alteration of the Ediag information, the boot code, or the EISA code requires that the other two be erased and then reprogrammed as well because an entire sector must be erased in its entirety. In addition, unlike the Intel flash ROM which automatically enters the Command Mode when 12 volts appears on the appropriate input line, the AMD flash ROM must be placed in the command mode by performing a sequence of instructions to a number of addresses in the AMD flash ROM. These addresses include locations across a variety of sectors of the AMD flash ROM.
It would be desirable to develop a method enabling existing support hardware in a PC to accommodate the AMD flash ROM. It would also be desirable to implement an AMD flash ROM that permits selective reprogramming of portions or segments of information contained in the same sector of a flash ROM memory array, particularly the EISA configuration information. It would be particularly advantageous to develop a methodology for modifying the EISA configuration code in a flash ROM device, such as the AMD flash ROM, without disturbing the other contents of the flash ROM, especially the boot code. Reprogramming EISA configuration code is governed, at least in some respects, by the EISA specifications. To reprogram the EISA configuration code in certain flash ROM devices, such as the AMD device, it is necessary to address portions of the main BIOS in other sectors of the flash ROM. Because of these complications, there has been a reluctance in the industry to use the 5 volt AMD device in a PC implementing an EISA bus system.
In commonly assigned, U.S. application Ser. No. 08/189,534, a method was disclosed for reflashing the BIOS sectors 0-6 of the AMD flash ROM without disturbing the boot code. The teachings of that application are incorporated by reference herein. That invention, however, did not provide a method for reprogramming the EISA configuration code in sector 7 of the flash ROM without disturbing the other programs located in sector 7. Consequently, there currently is no accepted technique for implementing the 5 volt AMD flash ROM into a PC, EISA system.